#ifndef DB_H
#define DB_H

#include <QObject>
#include <QSqlDatabase>
#include <QtSql>

#define _MSG_ERRO_COMUNICACAO_BD "Falha na comunicação com o banco de dados.\n\n" \
                                 "Verifique se o equipamento está conectado corretamente à rede.\n\n" \
                                 "Se o problema persistir, contate o suporte."

#define _MSG_ERRO_CONFIGURACAO_BD "Falha na comunicação com o banco de dados.\n\n" \
                                  "Verifique se o equipamento está conectado corretamente à rede.\n\n" \
                                  "Se o problema persistir, contate o suporte."

#define _MSG_ERRO_CONEXAO_BD "Falha na conexão com o banco de dados.\n\n" \
                             "Verifique se o equipamento está conectado corretamente\n" \
                             "à rede e se as configurações estão corretas.\n\n" \
                             "Se o problema persistir, contate o suporte."

class DB : public QObject
{
    Q_OBJECT
public:
    explicit DB(QString driverName, const char *connectionName = 0, QObject *parent = 0);

    QString hostName();
    void setHostName(QString hostName);

    QString databaseName();
    void setDatabaseName(QString databaseName);

    QString userName();
    void setUserName(QString userName);

    QString password();
    void setPassword(QString password);

    Q_INVOKABLE bool connect();
    Q_INVOKABLE void closeConnection();

    bool beginTransaction();
    bool commitTransaction();
    bool rollbackTransaction();

    QSqlDatabase getDB();

signals:

public slots:

private:
    QSqlDatabase db;
    QString m_driverName;
    QString m_connectionName;
    QString m_hostName;
    QString m_databaseName;
    QString m_userName;
    QString m_password;

    bool doConnection();

};

#endif // DB_H
